{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from sklearn import neighbors,datasets,cross_validation\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 给出一个随机产生的数据集  这里用sin函数，每隔5个点加一个随机的噪音\n",
    "\n",
    "def creat_data(n):\n",
    "#     np.random.seed(0)\n",
    "    X = 5*np.random.rand(n,1)\n",
    "    Y = np.sin(X).ravel()\n",
    "    # 随机数个数 每5个 插入一个\n",
    "    noise_num = int(n/5)\n",
    "    # 插入噪音随机数，每5个元素一插\n",
    "    Y[::5] += 1*(0.5 - np.random.rand(noise_num))\n",
    "    # 返回分组数据 训练集：测试集 = 0.75：0.25\n",
    "    return cross_validation.train_test_split(X,Y,test_size=0.25,random_state=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 测试分类KNN：\n",
    "def test_KNeighborsRegressor(*data):\n",
    "    X_train,X_test,Y_train,Y_test = data\n",
    "    knr = neighbors.KNeighborsRegressor()\n",
    "    knr.fit(X_train,Y_train)\n",
    "    \n",
    "    print('【训练集成绩】Training Score:{0}'.format(knr.score(X_train,Y_train)))\n",
    "    print('【测试集成绩】Testing  Score:{0}'.format(knr.score(X_test,Y_test)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "【训练集成绩】Training Score:0.9771752243576858\n",
      "【测试集成绩】Testing  Score:0.959124464283453\n"
     ]
    }
   ],
   "source": [
    "# 开始测试：\n",
    "X_train,X_test,Y_train,Y_test = creat_data(1000)\n",
    "test_KNeighborsRegressor(X_train,X_test,Y_train,Y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 检验【K】值与【投票策略】对结果的影响\n",
    "def test_KNR_k_w(*data):\n",
    "    X_train,X_test,Y_train,Y_test = data\n",
    "    Ks = np.linspace(1,Y_train.size,num=50,endpoint=False,dtype='int')\n",
    "    weights = ['uniform','distance']\n",
    "\n",
    "    fig = plt.figure()\n",
    "    ax = fig.add_subplot(111)\n",
    "    \n",
    "    for weight in weights :\n",
    "        train_score = []\n",
    "        test_score = []\n",
    "        for K in Ks:\n",
    "            knr = neighbors.KNeighborsRegressor(weights=weight,n_neighbors=K)\n",
    "            knr.fit(X_train,Y_train)\n",
    "            train_score.append(knr.score(X_train,Y_train))\n",
    "            test_score.append(knr.score(X_test,Y_test))\n",
    "\n",
    "        ax.plot(Ks,train_score,label='Training Score: weight={0}'.format(weight))\n",
    "        ax.plot(Ks,test_score, label='Testing Score: weight={0}'.format(weight))\n",
    "        \n",
    "    ax.set_xlabel(r'K')\n",
    "    ax.set_ylabel('score')\n",
    "    ax.set_title('KNeighborsClassifier')\n",
    "    ax.legend(loc='best')\n",
    "    ax.set_ylim(0,1.05)\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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F/XC5/OelBm+HAkO83ZYN12B6GhWSqnCoFOLxvzU6COCMk5x9LOekJl27ZkKGU0KSil1He7v1o3vqr1K2LkdHP78IXDez1JUaFJQSqnrICL0e2go35YeRJXkRSTNfsnbId1UmhRugptROtudMtnjx493qzaPO+bNm0dsbCwxMTFERUUxefLkm7LcW+XQoUP06XP1iig2m42QkJB8p82ePZtdu3bd8PpbtWrlurGuc+fOV73p8FaU7Va3lp/VQtfH3+bfvl0I3/4px36+/H6aQsud61YL0qug36dwpdLZWVlZxm63eyGiy128eNFUqlTJJCUluYZ37979h5ZZkLYvW2ZmpildunS+0/r372/mzJlzw8u+njLnt7psd04F6X+jKDp4PMX8MrKNyRwZalK2L/J2OFdFAbhPwSveXfcuu07d+DfA/NQtU5cXm7x43fPt3buXbt260bBhQzZt2sSSJUt4/fXX2bhxI2lpafTp08dVajq77PLVymS//PLLlCtXjqeeeopWrVrRqlUr/ve//5GSksIXX3xBixYtOH/+PAMHDmTnzp1ERUWxf/9+Jk+eTGxsrCuulJQUjDGUKVMGcNTbqV27NgBHjx7lscce47fffkNEmDhxIk2bNuWf//ynq0T0Y489xrBhw/Ldvq1btzJq1CjS09OpVasWn3/++WX1fXKKiopi7dq1lChRgjJlyjBhwgT69etHv379ePTRR2ndujUvvPACK1eu5OLFiwwfPpxBgwaxd+9eevXqxebNm6+4zdm1nUaMGJFrX+7evZsFCxbwyy+/8NprrzF37txrlqS+cOECDz30ENu3bycqKirXN/8qVaqwfft2fHx86N27N0eOHMFut/Paa69x6NChy8p2Dx48ON+/gSpVqjBo0CDmzZuH3W5n1qxZ1K5dm3PnzvHkk0+yadMmwFGFtUePHixcuPC69rW6+aqWK8WpAdP4ddqfqDprIGmlFhJYtaG3w/pD9PSRh+3atYunn36ahIQEwsPDGT16NPHx8WzZsoUlS5aQkJBw2TxXKpOdl3EWjxszZgyjRo0C4OOPP6ZixYokJCTwyiuvuD5IcqpQoQKdO3emevXq9OvXj+nTp7uKvw0dOpSOHTuydetWNmzYQGRkJGvXruWbb75h/fr1rF69mgkTJrBt27bLts/X15fRo0ezbNkyNm7cSHR0NB9++CEA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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 开始测试：\n",
    "X_train,X_test,Y_train,Y_test = creat_data(1000)\n",
    "test_KNR_k_w(X_train,X_test,Y_train,Y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 检验【P】距离函数对结果的影响\n",
    "def test_KNR_p(*data):\n",
    "    X_train,X_test,Y_train,Y_test = data\n",
    "    Ks = np.linspace(1,Y_train.size,endpoint=False,dtype='int')\n",
    "    Ps = [1,2,10]\n",
    "    fig = plt.figure()\n",
    "    ax = fig.add_subplot(111)\n",
    "    \n",
    "    for P in Ps :\n",
    "        train_score = []\n",
    "        test_score = []\n",
    "        for K in Ks:\n",
    "            knr = neighbors.KNeighborsRegressor(p=P,n_neighbors=K)\n",
    "            knr.fit(X_train,Y_train)\n",
    "            train_score.append(knr.score(X_train,Y_train))\n",
    "            test_score.append(knr.score(X_test,Y_test))\n",
    "\n",
    "        ax.plot(Ks,train_score,label='Training Score: P={0}'.format(P))\n",
    "        ax.plot(Ks,test_score, label='Testing Score: P={0}'.format(P))\n",
    "        \n",
    "    ax.set_xlabel(r'K')\n",
    "    ax.set_ylabel('score')\n",
    "    ax.set_title('KNeighborsClassifier')\n",
    "    ax.legend(loc='best')\n",
    "    ax.set_ylim(0,1.05)\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 开始测试：\n",
    "X_train,X_test,Y_train,Y_test = creat_data(1000)\n",
    "test_KNR_p(X_train,X_test,Y_train,Y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
